package com.wyw.design.model.learning.structure.bridging;

/**
 * @Title   桥接模式测试类
 * @Description 测试
 * @Author Mr Wu yewen.wu.china@gmail.com
 * Update History:
 * Author        Time            Content
 */
public class BridgingTest {
    /**
     * 由于 m1、m2 都属于 MobilePhoneAbstraction 的类的实例，因此我们可以调用它们的 run 方法，
     * 而 m1、m2 又都属于 HuaWeiMobilePhone 的实例，所以我们还能调用其 gpuTurborRun 方法，
     * 比如后期我们 run 实现有所变动，那么只需要修改 main 方法和 SoftImplementor 的实现类即可，其它代码就可以保持不动了。
     *
     * 通过 MobilePhoneAbstraction 中的 impl 桥接，就实现了抽象与行为实现的分离，这种就是桥接模式的存在意义。
     */
    public static void main(String[] args) {
        MobilePhoneAbstraction m1 = new HuaWeiMobilePhone(new ChatSoft());

        HuaWeiMobilePhone m2 = new HuaWeiMobilePhone(new GameSoft());

        m1.run();
        m2.run();

        m2.gpuTurborRun();
    }
}
